package MenuPrincipal;

import Figuras.ComponenteGenerico;
import JDBC.ConexionJDBCMySQL;
import java.awt.Color;
import java.awt.Cursor;
import JDBC.ConexionJDBCMySQL;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.io.File;
import java.io.IOException;
import java.util.LinkedList;
import javax.imageio.ImageIO;
import javax.swing.JTextField;
import javax.swing.UIManager;

public class MenuPrincipal extends javax.swing.JFrame {
 
    private PantallaParaDibujar Lienzo;
    boolean colorDeFondoDelLienzo;
    private JTextField NuevoDibujo_InsertarNombre;
    private String nombreDelDibujo;


    public MenuPrincipal() {
        ConexionJDBCMySQL.conectarConBBDD();

        colorDeFondoDelLienzo = false; 
        initComponents();
        setLocationRelativeTo(null);
        setExtendedState(MenuPrincipal.MAXIMIZED_BOTH);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        NuevoDibujo = new javax.swing.JFrame();
        nombreNuevoDibujo = new javax.swing.JLabel();
        introduccionDelNombre = new javax.swing.JTextField();
        aceptarNombre = new javax.swing.JButton();
        AbrirDibujo = new javax.swing.JFrame();
        textoDeExplicacion = new javax.swing.JLabel();
        elegirDibujo = new javax.swing.JButton();
        ListaDeDibujos = new javax.swing.JScrollPane();
        ListaDeComponentes = new javax.swing.JList();
        jPanelBarraAccesoDirecto = new javax.swing.JPanel();
        jPanelBarraDeHerramientas = new javax.swing.JPanel();
        jToolBarBarraDeHerramientas = new javax.swing.JToolBar();
        jPanel1 = new javax.swing.JPanel();
        jToggleButtonLinea = new javax.swing.JToggleButton();
        jToggleButtonCirculo = new javax.swing.JToggleButton();
        jToggleButtonRectangulo = new javax.swing.JToggleButton();
        jPanelInformacionExtra = new javax.swing.JPanel();
        jMenuBarArchivo = new javax.swing.JMenuBar();
        jMenuArchivo = new javax.swing.JMenu();
        jMenuItemNuevo = new javax.swing.JMenuItem();
        jMenuItemAbrir = new javax.swing.JMenuItem();
        jMenuItemGuardar = new javax.swing.JMenuItem();
        jMenuItemSalir = new javax.swing.JMenuItem();

        NuevoDibujo.setMinimumSize(new java.awt.Dimension(600, 200));

        nombreNuevoDibujo.setFont(new java.awt.Font("Comic Sans MS", 3, 14));
        nombreNuevoDibujo.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        nombreNuevoDibujo.setText("Introduzca el nombre del nuevo dibujo:");
        nombreNuevoDibujo.setVerticalAlignment(javax.swing.SwingConstants.TOP);

        introduccionDelNombre.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        introduccionDelNombre.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                introduccionDelNombreActionPerformed(evt);
            }
        });

        aceptarNombre.setText("Aceptar");
        aceptarNombre.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                aceptarNombreActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout NuevoDibujoLayout = new javax.swing.GroupLayout(NuevoDibujo.getContentPane());
        NuevoDibujo.getContentPane().setLayout(NuevoDibujoLayout);
        NuevoDibujoLayout.setHorizontalGroup(
            NuevoDibujoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(NuevoDibujoLayout.createSequentialGroup()
                .addGroup(NuevoDibujoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(NuevoDibujoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                        .addGroup(NuevoDibujoLayout.createSequentialGroup()
                            .addContainerGap()
                            .addComponent(aceptarNombre, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, NuevoDibujoLayout.createSequentialGroup()
                            .addGap(133, 133, 133)
                            .addComponent(introduccionDelNombre, javax.swing.GroupLayout.PREFERRED_SIZE, 288, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addComponent(nombreNuevoDibujo, javax.swing.GroupLayout.PREFERRED_SIZE, 461, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(20, Short.MAX_VALUE))
        );
        NuevoDibujoLayout.setVerticalGroup(
            NuevoDibujoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(NuevoDibujoLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(nombreNuevoDibujo, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(introduccionDelNombre, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(aceptarNombre)
                .addContainerGap())
        );

        AbrirDibujo.setMinimumSize(new java.awt.Dimension(600, 500));

        textoDeExplicacion.setText("Lista de dibujos de la base de dato:");

        elegirDibujo.setText("Aceptar");
        elegirDibujo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                elegirDibujoActionPerformed(evt);
            }
        });

        ListaDeComponentes.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        ListaDeDibujos.setViewportView(ListaDeComponentes);

        javax.swing.GroupLayout AbrirDibujoLayout = new javax.swing.GroupLayout(AbrirDibujo.getContentPane());
        AbrirDibujo.getContentPane().setLayout(AbrirDibujoLayout);
        AbrirDibujoLayout.setHorizontalGroup(
            AbrirDibujoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(AbrirDibujoLayout.createSequentialGroup()
                .addGroup(AbrirDibujoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(AbrirDibujoLayout.createSequentialGroup()
                        .addGap(223, 223, 223)
                        .addComponent(elegirDibujo, javax.swing.GroupLayout.PREFERRED_SIZE, 123, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(textoDeExplicacion, javax.swing.GroupLayout.PREFERRED_SIZE, 398, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(AbrirDibujoLayout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(ListaDeDibujos, javax.swing.GroupLayout.PREFERRED_SIZE, 336, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        AbrirDibujoLayout.setVerticalGroup(
            AbrirDibujoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(AbrirDibujoLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(textoDeExplicacion, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(ListaDeDibujos, javax.swing.GroupLayout.PREFERRED_SIZE, 171, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(elegirDibujo, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(28, Short.MAX_VALUE))
        );

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jPanelBarraAccesoDirecto.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 0, 0));
        getContentPane().add(jPanelBarraAccesoDirecto, java.awt.BorderLayout.NORTH);

        jPanelBarraDeHerramientas.setLayout(new javax.swing.BoxLayout(jPanelBarraDeHerramientas, javax.swing.BoxLayout.PAGE_AXIS));

        jToolBarBarraDeHerramientas.setRollover(true);

        jPanel1.setLayout(new java.awt.GridLayout(9, 2));

        jToggleButtonLinea.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/linea.png"))); // NOI18N
        jToggleButtonLinea.setToolTipText("Linea");
        jToggleButtonLinea.setFocusable(false);
        jToggleButtonLinea.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jToggleButtonLinea.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToggleButtonLinea.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jToggleButtonLineaActionPerformed(evt);
            }
        });
        jPanel1.add(jToggleButtonLinea);

        jToggleButtonCirculo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/circulo_16px.png"))); // NOI18N
        jToggleButtonCirculo.setToolTipText("Círculo");
        jToggleButtonCirculo.setFocusable(false);
        jToggleButtonCirculo.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jToggleButtonCirculo.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToggleButtonCirculo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jToggleButtonCirculoActionPerformed(evt);
            }
        });
        jPanel1.add(jToggleButtonCirculo);

        jToggleButtonRectangulo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/rectangulo.png"))); // NOI18N
        jToggleButtonRectangulo.setToolTipText("Rectangulo");
        jToggleButtonRectangulo.setFocusable(false);
        jToggleButtonRectangulo.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jToggleButtonRectangulo.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToggleButtonRectangulo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jToggleButtonRectanguloActionPerformed(evt);
            }
        });
        jPanel1.add(jToggleButtonRectangulo);

        jToolBarBarraDeHerramientas.add(jPanel1);

        jPanelBarraDeHerramientas.add(jToolBarBarraDeHerramientas);

        getContentPane().add(jPanelBarraDeHerramientas, java.awt.BorderLayout.WEST);

        jPanelInformacionExtra.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
        getContentPane().add(jPanelInformacionExtra, java.awt.BorderLayout.SOUTH);

        jMenuArchivo.setText("Archivo");
        jMenuArchivo.setToolTipText("Archivo");

        jMenuItemNuevo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemNuevo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/documentoNuevo_16px.png"))); // NOI18N
        jMenuItemNuevo.setText("Nuevo");
        jMenuItemNuevo.setToolTipText("Nuevo");
        jMenuItemNuevo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemNuevoActionPerformed(evt);
            }
        });
        jMenuArchivo.add(jMenuItemNuevo);

        jMenuItemAbrir.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemAbrir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/documentoAbrir_16px.png"))); // NOI18N
        jMenuItemAbrir.setText("Abrir");
        jMenuItemAbrir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemAbrirActionPerformed(evt);
            }
        });
        jMenuArchivo.add(jMenuItemAbrir);

        jMenuItemGuardar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_G, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemGuardar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/guardar_16px.png"))); // NOI18N
        jMenuItemGuardar.setText("Guardar");
        jMenuItemGuardar.setToolTipText("Guardar");
        jMenuItemGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemGuardarActionPerformed(evt);
            }
        });
        jMenuArchivo.add(jMenuItemGuardar);

        jMenuItemSalir.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemSalir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/salir_16px.png"))); // NOI18N
        jMenuItemSalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemSalirActionPerformed1(evt);
            }
        });
        jMenuArchivo.add(jMenuItemSalir);

        jMenuBarArchivo.add(jMenuArchivo);

        setJMenuBar(jMenuBarArchivo);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jMenuItemSalirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemSalirActionPerformed
        System.exit(0);
    }//GEN-LAST:event_jMenuItemSalirActionPerformed

    private void jToggleButtonCirculoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButtonCirculoActionPerformed
        elegirComponente(evt);
    }//GEN-LAST:event_jToggleButtonCirculoActionPerformed

    private void jToggleButtonRectanguloActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButtonRectanguloActionPerformed
        elegirComponente(evt);
    }//GEN-LAST:event_jToggleButtonRectanguloActionPerformed

    private void jMenuItemNuevoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemNuevoActionPerformed
       NuevoDibujo.setVisible(true);
    }//GEN-LAST:event_jMenuItemNuevoActionPerformed

    private void jMenuItemAbrirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemAbrirActionPerformed
        ListaDeComponentes.setListData(ConexionJDBCMySQL.sacarListaImagenesBBDD());
        AbrirDibujo.setVisible(true);
        String nombre = ListaDeComponentes.getSelectedValue().toString();
        Lienzo.abrirDibujo(nombre);
        devuelveElComponenteDeDibujoPredeterminado();
    }//GEN-LAST:event_jMenuItemAbrirActionPerformed

    private void jToggleButtonLineaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButtonLineaActionPerformed
        elegirComponente(evt);
    }//GEN-LAST:event_jToggleButtonLineaActionPerformed

    private void jMenuItemGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemGuardarActionPerformed
        // lo que sea para guardar
        Lienzo.guardarLienzo();
    }//GEN-LAST:event_jMenuItemGuardarActionPerformed

    private void jMenuItemSalirActionPerformed1(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemSalirActionPerformed1
        // TODO add your handling code here:
        System.exit(0);
    }//GEN-LAST:event_jMenuItemSalirActionPerformed1

    private void introduccionDelNombreActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_introduccionDelNombreActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_introduccionDelNombreActionPerformed

    private void aceptarNombreActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_aceptarNombreActionPerformed

        JTextField texto = new JTextField();
        texto = introduccionDelNombre;
        nombreDelDibujo = texto.getText();
        operacionNuevo();
        devuelveElComponenteDeDibujoPredeterminado();
        NuevoDibujo.setVisible(false);
        repaint();
    }//GEN-LAST:event_aceptarNombreActionPerformed

    private void elegirDibujoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_elegirDibujoActionPerformed

        Lienzo = new PantallaParaDibujar();
        String nombre = ListaDeComponentes.getSelectedValue().toString();
        Lienzo.abrirDibujo(nombre);
        devuelveElComponenteDeDibujoPredeterminado();
        AbrirDibujo.setVisible(false);
        Lienzo.setVisible(true);
        getContentPane().add(Lienzo, java.awt.BorderLayout.CENTER);
        repaint();
    }//GEN-LAST:event_elegirDibujoActionPerformed

    private void elegirComponente(ActionEvent event){
        if(event.getSource() == jToggleButtonLinea){
            Lienzo.introduceElComponenteConElQueSeVaADibujar(PantallaParaDibujar.devuelveUnaLinea());
        }
        if(event.getSource() == jToggleButtonRectangulo){
            Lienzo.introduceElComponenteConElQueSeVaADibujar(PantallaParaDibujar.devuelveUnRectangulo());
        } 
        if(event.getSource() == jToggleButtonCirculo){
            Lienzo.introduceElComponenteConElQueSeVaADibujar(PantallaParaDibujar.devuelveUnCirculo());
        }          
    }

    private void operacionNuevo(){
        Lienzo = new PantallaParaDibujar();
        Lienzo.introduceElNombreDelArchivo(nombreDelDibujo);
        Lienzo.setVisible(true);
        getContentPane().add(Lienzo, java.awt.BorderLayout.CENTER);
        devuelveElComponenteDeDibujoPredeterminado();
	Lienzo.introduceElColorDelFondoDePantalla(Color.WHITE);
	Lienzo.repaint();
    }

    private void devuelveElComponenteDeDibujoPredeterminado(){
        Lienzo.introduceElComponenteConElQueSeVaADibujar(PantallaParaDibujar.devuelveUnaLinea());
    }



    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new MenuPrincipal().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JFrame AbrirDibujo;
    private javax.swing.JList ListaDeComponentes;
    private javax.swing.JScrollPane ListaDeDibujos;
    private javax.swing.JFrame NuevoDibujo;
    private javax.swing.JButton aceptarNombre;
    private javax.swing.JButton elegirDibujo;
    private javax.swing.JTextField introduccionDelNombre;
    private javax.swing.JMenu jMenuArchivo;
    private javax.swing.JMenuBar jMenuBarArchivo;
    private javax.swing.JMenuItem jMenuItemAbrir;
    private javax.swing.JMenuItem jMenuItemGuardar;
    private javax.swing.JMenuItem jMenuItemNuevo;
    private javax.swing.JMenuItem jMenuItemSalir;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanelBarraAccesoDirecto;
    private javax.swing.JPanel jPanelBarraDeHerramientas;
    private javax.swing.JPanel jPanelInformacionExtra;
    private javax.swing.JToggleButton jToggleButtonCirculo;
    private javax.swing.JToggleButton jToggleButtonLinea;
    private javax.swing.JToggleButton jToggleButtonRectangulo;
    private javax.swing.JToolBar jToolBarBarraDeHerramientas;
    private javax.swing.JLabel nombreNuevoDibujo;
    private javax.swing.JLabel textoDeExplicacion;
    // End of variables declaration//GEN-END:variables

}